package org.example.DAO;

import org.example.entity.Comment;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public interface CommentDao {


    /**
     * 保存评论（新增或更新）
     * @param comment 评论对象
     * @return 是否保存成功
     */
    boolean saveComment(Comment comment) throws SQLException;

    /**
     * 获取用户对特定内容的评论
     * @param userId 用户ID
     * @param contentId 内容ID
     * @param contentType 内容类型
     * @return 评论对象，如果不存在返回null
     */
    Comment getUserComment(int userId, int contentId, String contentType) throws SQLException;

    /**
     * 添加新评论
     * @param comment 评论对象
     * @return 是否添加成功
     */
    boolean addComment(Comment comment) throws SQLException;

    /**
     * 根据ID获取评论详情
     * @param commentId 评论ID
     * @return 评论对象，如果不存在返回null
     */
    Comment getCommentById(int commentId) throws SQLException;

    /**
     * 更新评论
     * @param comment 评论对象
     * @return 是否更新成功
     */
    boolean updateComment(Comment comment) throws SQLException;

    List<Comment> getCommentsWithContentByUser(int userId) throws SQLException;

    /**
     * 检查用户是否是评论所有者
     * @param commentId 评论ID
     * @param userId 用户ID
     * @return 如果是所有者返回true
     */
    boolean isCommentOwner(int commentId, int userId) throws SQLException;

    /**
     * 删除评论
     * @param commentId 评论ID
     * @param userId 用户ID（用于验证）
     * @return 是否删除成功
     */
    boolean deleteComment(int commentId, int userId) throws SQLException;
}
